// 栈类
class Stack {
    constructor(items) {
        this.items = items
    }
    // 栈中的属性

    // 栈相关的方法
    // 压栈操作
    push(item) {
        items.push(item)
    }

    // 出栈操作
    pop() {
        return items.pop()
    }

    // peek操作
    peek() {
        return items[items.length - 1]
    }

    // 判断栈中的元素是否为空
    isEmpty() {
        return items.length == 0
    }

    // 获取栈中元素的个数
    size() {
        return items.length
    }
}

// 模拟面试题
var stack = new Stack()

// 情况下代码模拟
stack.push(6)
stack.push(5)
stack.pop()     // 5
stack.push(4)
stack.pop()     // 4
stack.push(3)
stack.pop()     // 3
stack.pop()     // 6
stack.push(2)
stack.push(1)
stack.pop()     // 1
stack.pop()     // 2

// 封装十进制转二进制的函数
// decimal
// binary
function dec2bin(decNumer) {
    // 定义变量
    var stack = new Stack()
    var remainder;

    // 循环除法
    while (decNumer > 0) {
        remainder = decNumer % 2
        decNumer = Math.floor(decNumer / 2)
        stack.push(remainder)
    }

    // 将数据取出
    var binayriStrng = ""
    while (!stack.isEmpty()) {
        binayriStrng += stack.pop()
    }
    return binayriStrng
}

// 测试函数
console.log(dec2bin(10))
console.log(dec2bin(233))
console.log(dec2bin(1000))
